-- @Author: 作者QQ2308873645
-- @Date:   2021-11-27 13:12:31
-- @Last Modified by:   作者QQ2308873645
-- @Last Modified time: 2022-06-08 19:06:03

function 任务控制类:添加游泳任务(id)----------------
 self.临时id3=self:生成任务id()
  任务数据[self.临时id3]={
  类型="游泳"
 ,id=id
 ,起始=os.time()
 ,结束=7200
 ,NPC=109212
 ,地图编号=1092
 ,进程=1
 ,任务id=self.临时id3
 ,数字id={}
 ,战斗序列={}
 }
 for n=1,#队伍数据[玩家数据[id].队伍].队员数据 do
    self.任务临时id1=角色处理类:生成任务id(玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]])
    玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.任务数据[self.任务临时id1]=self.临时id3
    任务数据[self.临时id3].数字id[n]=队伍数据[玩家数据[id].队伍].队员数据[n]
    游泳比赛数据[队伍数据[玩家数据[id].队伍].队员数据[n]]=游泳比赛数据[队伍数据[玩家数据[id].队伍].队员数据[n]]+1
    self:刷新追踪任务信息(队伍数据[玩家数据[id].队伍].队员数据[n])
  end
  for n=1,15 do
   任务数据[self.临时id3].战斗序列[n]=false
  end
 广播队伍消息(id,7,"#Y/你参加了游戏大赛，请前往1号裁判处报道")
 end
function 任务控制类:触发游泳比赛(id,标识)-------------
 local  游泳NPC={109212,151402,151403,111802,111801,112001,153201,111901,111803,111620,111619,111618,111621,150607,150608}
  local 游泳地图={1092,1514,1514,1118,1118,1120,1532,1119,1118,1116,1116,1116,1116,1506,1506}
  if 玩家数据[id].队伍==0 then
   发送数据(玩家数据[id].连接id,7,"#Y/请组队前来我这里报道")
   return 0
  elseif #队伍数据[玩家数据[id].队伍].队员数据<1 and DebugMode == false  then
   发送数据(玩家数据[id].连接id,7,"#Y/队伍中的成员数低于1人，无法进行报道")
   return 0
  else
    --检查任务
   self.任务通过=true
    for n=1,#队伍数据[玩家数据[id].队伍].队员数据 do
      self.临时id=队伍数据[玩家数据[id].队伍].队员数据[n]
      if  角色处理类:GetTaskID(玩家数据[self.临时id],"游泳")==0 then
       self.任务通过=false
      elseif 游泳NPC[任务数据[角色处理类:GetTaskID(玩家数据[self.临时id],"游泳")].进程]~=任务数据[角色处理类:GetTaskID(玩家数据[self.临时id],"游泳")].NPC then
        self.任务通过=false
        end
      end
   if self.任务通过==false then
     发送数据(玩家数据[id].连接id,7,"#Y/队伍中有玩家任务不一致，无法进行报道")
     return 0
     end
    --检查是否进行战斗
    if 任务数据[角色处理类:GetTaskID(玩家数据[id],"游泳")].战斗序列[任务数据[角色处理类:GetTaskID(玩家数据[id],"游泳")].进程]==false and math.random(100)<=70 then
       战斗准备类:进入处理(id,100039,"66",角色处理类:GetTaskID(玩家数据[id],"游泳"))
    else
      self.结束id=角色处理类:GetTaskID(玩家数据[id],"游泳")
     for n=1,#队伍数据[玩家数据[id].队伍].队员数据 do
       self.临时id=队伍数据[玩家数据[id].队伍].队员数据[n]
       self.临时等级=玩家数据[self.临时id].角色.等级
       self.经验奖励=math.floor(self.临时等级*self.临时等级*600*(1+任务数据[角色处理类:GetTaskID(玩家数据[self.临时id],"游泳")].进程/10))
       self.银子奖励=math.floor(self.临时等级*self.临时等级*6*(1+任务数据[角色处理类:GetTaskID(玩家数据[self.临时id],"游泳")].进程/10))
       角色处理类:添加经验(玩家数据[self.临时id],self.经验奖励,"游泳")
       角色处理类:添加储备(玩家数据[self.临时id],self.银子奖励,"游泳")
       角色处理类:添加仙玉(玩家数据[self.临时id],20,"游泳")
       local 奖励物品 = {}
       local 奖励概率 = {}
       local 奖励数量 = {}
       local 奖励总概率 = f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\游泳.txt]], "游泳", "奖励总概率")+0
       for i=1,10 do
           奖励物品[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\游泳.txt]], "游泳", "物品["..tostring(i).."]")
           奖励概率[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\游泳.txt]], "游泳", "概率["..tostring(i).."]")+0
           奖励数量[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\游泳.txt]], "游泳", "数量["..tostring(i).."]")+0
       end
       local 循环次数 = 取幸运值奖励(玩家数据[self.临时id].角色.幸运)
       local 奖励次数 = 0
       for i=1,循环次数 do
           local 物品名称 = ""
           local 随机奖励 = math.random(奖励总概率)
           local 数量 = 0
           if 随机奖励<=奖励概率[1] then
              物品名称 = 奖励物品[1]
              数量 = math.random(1,奖励数量[1])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[2] then
              物品名称 = 奖励物品[2]
              数量 = math.random(1,奖励数量[2])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[3] then
              物品名称 = 奖励物品[3]
              数量 = math.random(1,奖励数量[3])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[4] then
              物品名称 = 奖励物品[4]
              数量 = math.random(1,奖励数量[4])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[5] then
              物品名称 = 奖励物品[5]
              数量 = math.random(1,奖励数量[5])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[6] then
              物品名称 = 奖励物品[6]
              数量 = math.random(1,奖励数量[6])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[7] then
              物品名称 = 奖励物品[7]
              数量 = math.random(1,奖励数量[7])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[8] then
              物品名称 = 奖励物品[8]
              数量 = math.random(1,奖励数量[8])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[9] then
              物品名称 = 奖励物品[9]
              数量 = math.random(1,奖励数量[9])
              奖励次数 = 奖励次数 + 1
           elseif 随机奖励<=奖励概率[10] then
              物品名称 = 奖励物品[10]
              数量 = math.random(1,奖励数量[10])
              奖励次数 = 奖励次数 + 1
           end
           if 物品名称 ~= "" and 物品名称 == "高级魔兽要诀" then
              local 技能=取高级兽诀名称()
              道具处理类:给予道具(self.临时id,物品名称,nil,技能)
           elseif 物品名称 ~= "" and 物品名称 == "特殊魔兽要诀" then
              local 技能=取特殊兽诀名称()
              道具处理类:给予道具(self.临时id,物品名称,nil,技能)
           else
               道具处理类:给予道具(self.临时id,物品名称,nil,nil,数量)
           end
       end
       道具处理类:系统兽决存仓(self.临时id)
       道具处理类:系统仓库处理(self.临时id)
        广播消息("#hd/".."#S/(游泳活动)".."#R/ "..玩家数据[self.临时id].角色.名称.."#Y/在游泳大赛中激流勇进，获得了裁判#g/"..奖励次数.."#y/次物品奖励".."#"..math.random(110))
        if 任务数据[角色处理类:GetTaskID(玩家数据[self.临时id],"游泳")].进程==15 then
          角色处理类:取消任务(玩家数据[self.临时id],角色处理类:GetTaskID(玩家数据[self.临时id],"游泳"))
          角色处理类:添加活跃度(玩家数据[self.临时id],10)
          发送数据(玩家数据[self.临时id].连接id,7,"#Y/你完成了游泳大赛")
        else
        发送数据(玩家数据[self.临时id].连接id,7,"#Y/请前往下一个裁判处报道")

        end
       
     end
        if 任务数据[self.结束id].进程==15 then
        任务数据[self.结束id]=nil
        else
        任务数据[self.结束id].进程=任务数据[self.结束id].进程+1
        任务数据[self.结束id].NPC=游泳NPC[任务数据[self.结束id].进程]
        任务数据[self.结束id].地图编号=游泳地图[任务数据[self.结束id].进程]
        end
        for n=1,#队伍数据[玩家数据[id].队伍].队员数据 do
          local 临时id=队伍数据[玩家数据[id].队伍].队员数据[n]
          self:刷新追踪任务信息(临时id)
        end
      end
    end
 end
